home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / news / inn1.000 / inn1.4sec-linux-src.tar / inn / expire / expire.pch < prev    next >
Text File  |  1991-11-27  |  3KB  |  140 lines

  1. $Revision: 1.7 $
  2. Matthias Urlichs, <urlichs@smurf.sub.org>.
  3. July 8
  4.  
  5. This patch to C News expire.c (6Jul91 patchdate) teaches expire to
  6. interact with innd.  You will also need to add "lib/inndcomm.o" to
  7. your libcnews.a
  8.  
  9. ****WARNING****
  10.     If you install this patch, make sure that your doexpire script does
  11.     NOT call updatemin or upact!
  12.  
  13. *** expire.c.orig    Tue Jul  9 15:57:21 1991
  14. --- expire.c    Wed Jul 10 16:26:26 1991
  15. ***************
  16. *** 6,11 ****
  17. --- 6,16 ----
  18.    * is arbitrarily hard when control files get complex, to hell with it.
  19.    */
  20.   
  21. + /*
  22. +  * Extended by Matthias Urlichs (urlichs@smurf.sub.org) to talk to innd.
  23. +  */
  24. + #define INND
  25.   #include <stdio.h>
  26.   #include <ctype.h>
  27.   #include <string.h>
  28. ***************
  29. *** 240,246 ****
  30. --- 245,256 ----
  31.   
  32.       (void) umask(newsumask());
  33.       doit();            /* side effect: newslock() */
  34. + #ifdef INND
  35. +     if(nlocked && ICCgo("expiring") < 0)
  36. +         fail("ctlinnd go failed", "");
  37. + #else
  38.       newsunlock();
  39. + #endif
  40.   
  41.       if (latest > time((time_t *)NULL)) {
  42.           complain("some article arrival dates are in the future!", "");
  43. ***************
  44. *** 471,476 ****
  45. --- 481,490 ----
  46.           if (dbzagain("history.n", "history") < 0)
  47.               fail("dbzagain(history.n) failed", "");
  48.       }
  49. + #ifdef INND
  50. +     if (ICCopen() < 0)
  51. +         fail("ICCopen() failed", "");
  52. + #endif
  53.   
  54.       cd(artfile((char *)NULL));
  55.       while ((line = readline(old)) != NULL) {
  56. ***************
  57. *** 713,718 ****
  58. --- 733,746 ----
  59.                               p = strchr(p+1, '.'))
  60.                   *p = '/';
  61.               expire(name, dir);
  62. + #ifdef INND
  63. +             if(!nlocked && nleft == 0 && srcc == '\0') {
  64. +                 if(expdebug)
  65. +                     fprintf(stderr,"Cancelling %s '%s'\n",
  66. +                         name,msgid);
  67. +                 ICCcancel(msgid);
  68. +             }
  69. + #endif
  70.               if (dir != NULL && printexpiring)
  71.                   printstuff(msgid, name, recdate);
  72.               nexpired++;
  73. ***************
  74. *** 729,735 ****
  75.       if (nleft == 0)
  76.           return(NULL);
  77.       *dst++ = '\0';
  78. !     if (leaders && nleft == 1 && nexpired > 0)    /* aging leader */
  79.           return(doarticle(oldnames, recdate, expdate, msgid));
  80.       return(oldnames);
  81.   }
  82. --- 757,767 ----
  83.       if (nleft == 0)
  84.           return(NULL);
  85.       *dst++ = '\0';
  86. !     if (
  87. ! #ifndef INND
  88. !     leaders &&
  89. ! #endif
  90. !         nleft == 1 && nexpired > 0)    /* aging leader */
  91.           return(doarticle(oldnames, recdate, expdate, msgid));
  92.       return(oldnames);
  93.   }
  94. ***************
  95. *** 1174,1181 ****
  96. --- 1206,1218 ----
  97.           (void) unlink("history.n.dir");
  98.           (void) unlink("history.n.pag");
  99.       }
  100. + #ifdef INND
  101. +     (void) ICCclose();
  102. + #endif
  103.       errno = saveerr;
  104. + #ifndef INND
  105.       errunlock(s1, s2);
  106. + #endif
  107.       /* NOTREACHED */
  108.   }
  109.   
  110. ***************
  111. *** 1265,1270 ****
  112. --- 1302,1311 ----
  113.       /* EOF. */
  114.       if (nlocked)
  115.           return;        /* We're really done. */
  116. + #ifdef INND
  117. +     if (!rebuild)        /* save the rest for next time */
  118. +         return;
  119. + #endif
  120.   
  121.       /* EOF but we haven't locked yet.  Lock and try again. */
  122.       (void) signal(SIGINT, SIG_IGN);
  123. ***************
  124. *** 1271,1277 ****
  125. --- 1312,1323 ----
  126.       (void) signal(SIGQUIT, SIG_IGN);
  127.       (void) signal(SIGHUP, SIG_IGN);
  128.       (void) signal(SIGTERM, SIG_IGN);
  129. + #ifdef INND
  130. +     if (ICCpause("expiring") < 0)
  131. +         fail("ctlinnd pause failed!", "");
  132. + #else
  133.       newslock();
  134. + #endif
  135.       nlocked = 1;
  136.       refill(fd);
  137.   }
  138.  
  139.